//
//  AutoCreateProperty.h
//  AutoCreatePropertyForDictDemo
//
//  Created by anmin on 2017/11/24.
//  Copyright © 2017年 puhui. All rights reserved.
//

#import <Foundation/Foundation.h>

typedef void(^CompleteBlock)(BOOL isSuccess, NSError * _Nullable error);

typedef NS_ENUM(NSUInteger, GeneratePropertyError) {
    GeneratePropertyErrorDataEmpty,
    GeneratePropertyErrorNotConfigModelDir, //没有配置工程目录
    GeneratePropertyErrorMakeBaseModel,//生成baseModel失败
    GeneratePropertyErrorMakeDir,// 生成文件夹失败
    GeneratePropertyErrorTouchHField,//生成头文件失败
    GeneratePropertyErrorTouchMField,//生成实现文件失败
    GeneratePropertyErrorWriteHFile,//写入实现文件内容失败
    GeneratePropertyErrorWriteMFile,//写入头文件内容失败
};

extern const NSString * _Nonnull auto_create_property_error_domain;

@interface AutoCreateProperty : NSObject

+(nonnull AutoCreateProperty*)defaultInstance;


/**
 自动创建model, 目前只适用于iOS手机端开发并且需要UIKit框架， 并且只适用于模拟器DEBUG环境

 @param prefix model的前缀
 @param modelName model类名，不带前缀的
 @param dataSource 需要创建model的数据源
 @param complete 完成会调，isSuccess yes 为创建成功，error为空；
                 isSuccess NO 为创建成功，error不为空；
                 NSLocalizedDescriptionKey : 对于失败的描述
 */
- (void)autoGenerateModelWithModelPrefix:(NSString *_Nonnull)prefix
                       noPrefixModelName:(NSString *_Nonnull)modelName
                              dataSource:(NSDictionary *_Nonnull)dataSource
                                complete:(CompleteBlock _Nonnull)complete;


@end
